#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <semaphore.h>
#include <time.h>
#include <sys/types.h>
#include <allegro.h>
#include <math.h>

#define SLP_T 1  /* Tempo de sleep */
#define N 25  /* Numero de travessias do rio - maximo suportado pelo modo grafico eh 25 */
#define DEBUG 1

typedef enum{false, true} bool;

typedef enum {HACKER, SERF} e_tipo;

typedef struct status
{
   pthread_t thrd_id;
   e_tipo tipo;
   int x;
   float y;
} t_status;

typedef struct barco
{
   int tripulacao[4];
   int x;
   float y;
   int vel_x;
   float vel_y;
} t_barco;

typedef struct image
{
   BITMAP *tux;
   BITMAP *bill;
   BITMAP *fundo;
   BITMAP *barco;
} t_image;

sem_t barco_pronto;

///////// FUNCOES EM RIVER.C /////////////

/* Usada nos testes sem interface grafica */
void d_printf(char *str);

void row_boat();

void board(char c, int id);

void *hacker(void* v);

void *serf(void *v);

int initialize();

int dispose();

///////// FUNCOES EM MAIN.C /////////////

void status_init(int id, e_tipo tipo);

void barco_add_thrd(int id);

void init_margem();

void margem_add_thrd(int v);

void margem_del_thrd(int id);

void barco_zarpar();
